
#include <my_header.h>

int main(int argc, char *argv[]){                                  
    // 打开管道1的读端口
    int read_fd = open("1.pipe", O_RDONLY);
    ERROR_CHECK(read_fd, -1, "open 1.pipe");
    // 打开管道2的写端口
    int write_fd = open("2.pipe", O_WRONLY);
    ERROR_CHECK(write_fd, -1, "open 2.pipe");

    // 设置消息缓冲区
    char mes[200] = {0};

    // 通信进程
    while(1){
        int count=0;
        // 持续接收usera的消息
        while(1){    
            bzero(mes, 200); // 消息缓冲区清零
            count = read(read_fd, mes, 200); // 从管道1中读数据
            if(count == 1 && mes[0] == '\x04'){
                printf("对方已终止输入。接下来你可以开始发送消息。\n");
                break;
            }
            printf("usera: %s\n", mes); // 向终端显示usera发送的消息
        }

        // userb发送消息
        printf("input a message: "); // 提示输入
        fflush(stdout); // 刷新输出流
        bzero(mes, 200); // 消息缓冲区清零
        count = read(STDIN_FILENO, mes, 200); // 从标准输入流读取
        if(count == 0){
            printf("停止输入，程序结束。\n");
            break;  // 用户自行停止输入，程序终止
        }
        write(write_fd, mes, count); // 向管道2写数据
    }
    // 通信结束，关闭管道端口
    close(write_fd);
    close(read_fd);
    return 0;
}
